@Query Annotation ব্যবহার করে Custom SQL Query তৈরি করা

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Spring ORM এবং Native SQL Queries |
67
67

Spring Data JPA-তে @Query অ্যানোটেশনটি ব্যবহার করে কাস্টম SQL বা HQL (Hibernate Query Language) কোয়েরি লেখা যায়। এটি এমন ক্ষেত্রে কার্যকর যখন ডিফল্ট মেথড বা কোয়েরিগুলো অ্যাপ্লিকেশনের চাহিদা পূরণ করতে পারে না।


@Query অ্যানোটেশনের বৈশিষ্ট্য

  • কাস্টম SQL/HQL কোয়েরি লেখা যায়।
  • নামযুক্ত প্যারামিটার (:parameterName) বা পজিশনাল প্যারামিটার (?index) ব্যবহার করা যায়।
  • Native Query চালানোর জন্য nativeQuery = true ব্যবহার করা হয়।
  • JPA রেপোজিটরির পদ্ধতিগুলোর সাথে কাস্টম কোয়েরি সংযুক্ত করা হয়।

Maven ডিপেনডেন্সি

Spring Data JPA ব্যবহার করতে নিম্নোক্ত ডিপেনডেন্সি যোগ করতে হবে:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.5.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

মডেল ক্লাস তৈরি করা

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    @Column(name = "age")
    private int age;

    // Getters and Setters
}

JPA রেপোজিটরি তৈরি করা

JPA রেপোজিটরি ইন্টারফেস তৈরি করে কাস্টম SQL কোয়েরি সংজ্ঞায়িত করা যাবে।

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {

    // Custom Query to find users by name
    @Query("SELECT u FROM User u WHERE u.name = :name")
    List<User> findUsersByName(@Param("name") String name);

    // Custom Query to find users above a certain age
    @Query("SELECT u FROM User u WHERE u.age > ?1")
    List<User> findUsersAboveAge(int age);

    // Native SQL Query to fetch users by email
    @Query(value = "SELECT * FROM users WHERE email = ?1", nativeQuery = true)
    User findUserByEmail(String email);
}

সার্ভিস লেয়ার তৈরি করা

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getUsersByName(String name) {
        return userRepository.findUsersByName(name);
    }

    public List<User> getUsersAboveAge(int age) {
        return userRepository.findUsersAboveAge(age);
    }

    public User getUserByEmail(String email) {
        return userRepository.findUserByEmail(email);
    }
}

কন্ট্রোলার লেয়ার তৈরি করা

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/by-name/{name}")
    public List<User> getUsersByName(@PathVariable String name) {
        return userService.getUsersByName(name);
    }

    @GetMapping("/above-age/{age}")
    public List<User> getUsersAboveAge(@PathVariable int age) {
        return userService.getUsersAboveAge(age);
    }

    @GetMapping("/by-email")
    public User getUserByEmail(@RequestParam String email) {
        return userService.getUserByEmail(email);
    }
}

বৈশিষ্ট্য ও সুবিধা

  1. নির্দিষ্ট কোয়েরি বাস্তবায়ন: @Query এর মাধ্যমে ডাটাবেস অপারেশনে আরও নিয়ন্ত্রণ পাওয়া যায়।
  2. ডাইনামিক প্যারামিটার ব্যবহার: প্যারামিটারাইজড কাস্টম কোয়েরি ব্যবহার করে আরও স্থিতিস্থাপক কোড লেখা সম্ভব।
  3. Native Query সমর্থন: জটিল SQL স্টেটমেন্ট কার্যকর করার জন্য Native Query ব্যবহার করা যায়।

Spring ORM এ @Query অ্যানোটেশন ব্যবহার করে কাস্টম কোয়েরি তৈরি ডাটাবেস অপারেশনকে আরও সুনিয়ন্ত্রিত এবং কার্যকর করতে সাহায্য করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion